Django তার আর্কিটেকচারটি Model-View-Template (MVT) প্যাটার্ন অনুসরণ করে, যা Model-View-Controller (MVC) আর্কিটেকচারের একটি সংস্করণ। এই আর্কিটেকচারটি ডেভেলপারদেরকে পরিষ্কারভাবে তাদের অ্যাপ্লিকেশনকে সংগঠিত করতে এবং বিভিন্ন উপাদান পৃথকভাবে পরিচালনা করতে সাহায্য করে। Django-তে MVT আর্কিটেকচারটি কীভাবে কাজ করে তা বুঝতে হলে, আমাদের প্রতিটি উপাদানের ভূমিকা বোঝা প্রয়োজন।
Model (মডেল)
Model হলো Django এর ডেটাবেস লেভেল। এটি ডেটাবেসের কাঠামো এবং ডেটার সংরক্ষণ ও ব্যবস্থাপনা করার জন্য দায়ী। মডেল ডেটাবেসের টেবিলের মতো কাজ করে এবং Django এর Object-Relational Mapping (ORM) সিস্টেম ব্যবহার করে ডেটাবেসের সঙ্গে ইন্টারঅ্যাক্ট করে।
- Model ডেটার অবজেক্ট এবং এর সম্পর্ক নির্ধারণ করে।
- ডেটাবেস টেবিলের জন্য প্রয়োজনীয় কাঠামো এবং রিলেশন তৈরি করে।
- ডেটা পুনরুদ্ধার, সংযোজন, আপডেট এবং মুছতে QuerySet এবং ORM এর মাধ্যমে কাজ করে।
উদাহরণ:
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
এখানে, Post মডেলটি একটি ব্লগ পোস্টের ডেটা সংরক্ষণ করবে, যেমন টাইটেল, কনটেন্ট এবং তৈরি করার সময়।
View (ভিউ)
View হলো Django এর অ্যাপ্লিকেশন লজিকের অংশ। এটি ইউজারকে কীভাবে ডেটা প্রদর্শিত হবে তা নির্ধারণ করে। ভিউ অ্যাপ্লিকেশন লজিক এবং প্রেজেন্টেশন এর মধ্যে সংযোগ স্থাপন করে, কিন্তু ভিউ মূলত ডেটা নিয়ে কাজ করে না—এটি মডেল থেকে ডেটা সংগ্রহ করে এবং তাকে উপস্থাপনের জন্য টেমপ্লেটে পাঠায়।
- View ডেটা গ্রহণ করে এবং তা প্রক্রিয়া করে।
- ভিউ নির্ধারণ করে কোন টেমপ্লেট ব্যবহার করা হবে এবং ডেটার সঙ্গে কীভাবে টেমপ্লেট মেলানো হবে।
উদাহরণ:
from django.shortcuts import render
from .models import Post
def post_list(request):
posts = Post.objects.all() # মডেল থেকে সমস্ত পোস্ট সংগ্রহ
return render(request, 'post_list.html', {'posts': posts})
এখানে, post_list ভিউটি Post মডেল থেকে সমস্ত ব্লগ পোস্ট সংগ্রহ করে এবং post_list.html টেমপ্লেটে পাঠিয়ে দেয়।
Template (টেমপ্লেট)
Template হলো ইউজার ইন্টারফেস (UI) বা ফ্রন্টএন্ড উপস্থাপনার অংশ। এটি HTML কোডের মাধ্যমে ব্যবহারকারীকে ডেটা প্রদর্শন করে। Django এর টেমপ্লেট সিস্টেম ডাইনামিক HTML তৈরি করতে সাহায্য করে, যেখানে আপনি টেমপ্লেট ট্যাগ এবং ভেরিয়েবল ব্যবহার করে ডেটা প্রক্রিয়া এবং প্রদর্শন করতে পারেন।
- Template ডেটা প্রদর্শন করার জন্য HTML, CSS এবং JavaScript ব্যবহার করে।
- টেমপ্লেটে Django টেমপ্লেট ভাষা (Django Template Language - DTL) ব্যবহার করা হয়, যা ডেটা প্রক্রিয়া এবং কন্টেন্ট ইনজেকশন সাপোর্ট করে।
উদাহরণ:
<!-- post_list.html -->
<html>
<body>
<h1>Blog Posts</h1>
<ul>
{% for post in posts %}
<li>{{ post.title }} - {{ post.created_at }}</li>
{% endfor %}
</ul>
</body>
</html>
এখানে, টেমপ্লেটে posts ভেরিয়েবল থেকে ডেটা নিয়ে তা HTML লিস্টে প্রদর্শিত হচ্ছে।
Django এর MVT আর্কিটেকচারের কাজের পদ্ধতি
- URL Request (ইউআরএল রিকোয়েস্ট): ব্যবহারকারী যখন ব্রাউজারে একটি URL ইনপুট করেন, Django URL dispatcher সেই URL কে একটি নির্দিষ্ট ভিউয়ের সঙ্গে মেলানোর কাজ করে।
- View (ভিউ): মেলে পাওয়া ভিউটি ডেটাবেস থেকে প্রয়োজনীয় ডেটা গ্রহণ করে। এটি মডেলকে কল করে এবং ডেটা সংগ্রহ করে।
- Template (টেমপ্লেট): ভিউটি ডেটা সংগ্রহ করার পর, টেমপ্লেট ব্যবহার করে সেই ডেটা প্রদর্শন করার জন্য একটি HTML রেসপন্স তৈরি করা হয়।
- Response (রেসপন্স): এই HTML রেসপন্সটি ব্রাউজারে ফেরত পাঠানো হয় এবং ব্যবহারকারী ডেটা দেখতে পান।
MVT বনাম MVC
Django এর আর্কিটেকচার, Model-View-Template (MVT), সাধারণ Model-View-Controller (MVC) আর্কিটেকচারের খুব কাছাকাছি। কিন্তু কিছু পার্থক্য রয়েছে:
- Django তে Controller তত্ত্বটি মূলত View দ্বারা কাজ করে, যা অ্যাপ্লিকেশনের লজিকাল অংশ এবং ইউজার ইন্টারফেসের মধ্যে সংযোগ স্থাপন করে।
- Template Django এর ভিউয়ের উপস্থাপন অংশের মতো কাজ করে, যা MVC-তে View হিসেবে পরিচিত।
এছাড়া, Django তে Template আলাদা উপাদান, যেটি শুধুমাত্র ইউজার ইন্টারফেস তৈরির কাজ করে, যেখানে MVC তে View সাধারণত ডেটা এবং লজিক্যাল উপস্থাপন উভয়কেই একসঙ্গে ধারণ করে।
Django এর MVT আর্কিটেকচার ডেভেলপারদের অ্যাপ্লিকেশন তৈরিতে সহজতর পদ্ধতি প্রদান করে। এর মাধ্যমে ডেটাবেস ম্যানেজমেন্ট, অ্যাপ্লিকেশন লজিক এবং ইউজার ইন্টারফেস আলাদা করা হয়, যার ফলে অ্যাপ্লিকেশনটি পরিষ্কার, মেনটেইনেবল এবং স্কেলেবল হয়। MVT আর্কিটেকচার Django কে আরও কার্যকরী, নিরাপদ এবং দ্রুত ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য একটি শক্তিশালী টুল বানিয়েছে।